/**
 * \file suggestion.cpp
 * \brief Suggestion des cases ou la creation d'une ville serait la plus judicieuse
 * \author ARTUR Vincent
 * \author LAPERDRIX Pierre
 * \version 1.0
 */

#include "suggestion.h"

using namespace std;

Suggestion::Suggestion() {}

Suggestion::~Suggestion() {}


/** Somme ressources perimetre - somme des attaques ennemies dans un perimetre de 7 cases */
int** Suggestion::suggerer(int** cases,int** ennemis,int** villes,int taille){
	int** coeff = new int*[taille];
	for(int i=0;i<taille;i++){
		coeff[i] = new int[taille];
		for(int j=0;j<taille;j++){
			coeff[i][j]=0;
		}		
	}

	int max=-999999;
	for(int i=0;i<taille;i++){
		for(int j=0;j<taille;j++){

			// Somme ressources perimetre
			for(int k=i-2;k<=i+2;k++){
				for(int l=j-2;l<=j+2;l++){
					if(k>0 && k<taille && l>0 && l<taille){
						coeff[i][j]+=cases[k][l]*villes[k][l];
					}
				}
			}

			// Attaques ennemies
			for(int k=i-3;k<=i+3;k++){
				for(int l=j-3;l<=j+3;l++){
					if(k>0 && k<taille && l>0 && l<taille){
						coeff[i][j]-=ennemis[k][l];
					}
				}
			}
			if(coeff[i][j]>max) max=coeff[i][j];

		}
	}



	int** res = new int*[taille];
	for(int i=0;i<taille;i++){
		res[i] = new int[taille];
		for(int j=0;j<taille;j++){
			if(coeff[i][j] > max-7) res[i][j]=1;
			else res[i][j] = 0;
		}		
	}
	return res;


}

Suggestion* Suggestion_new() { return new Suggestion(); }
void Suggestion_delete(Suggestion* sugg) { delete sugg; }
int** Suggestion_suggerer(Suggestion* sugg,int** cases,int** ennemis,int** villes,int taille) { return sugg->suggerer(cases,ennemis,villes,taille);}

